// esempio di dati static per registrare il numero di oggetti
// all'interno di una classe

#include <iostream>
using namespace std;

class contatore {
public:
static int conta;
contatore()
{
conta++;
}
~contatore()
{
conta--;
}
};

int contatore::conta;

void f();

int main()
{
contatore oggetto1;
cout <<"oggetti esistenti:";
cout <<contatore::conta<<"\n";
contatore oggetto2;
cout <<"oggetti esistenti:";
cout <<contatore::conta<<"\n";

f();
cout <<"oggetti esistenti:";
cout <<contatore::conta<<"\n";

return 0;
}

void f()
{
contatore temp; //temp viene distrutta all'uscita da f()
cout <<"oggetti esistenti:";
cout <<contatore::conta<<"\n";
}

/*
Oggetti esistenti: 1
Oggetti esistenti: 2
Oggetti esistenti: 3
Oggetti esistenti: 2
*/
